#pragma once

struct NVector2
{
public:
	NVector2();
	NVector2(float x, float y);
	~NVector2();

	bool operator== (const NVector2& rhs) const;
	bool operator!= (const NVector2& rhs) const;

	NVector2 operator+ (const NVector2 rhs) const;
	NVector2 operator- (const NVector2 rhs) const;

	float X, Y;
};

struct NVector3 : public NVector2
{
public:
	NVector3();
	NVector3(NVector2 vector);
	NVector3(float x, float y, float z);
	~NVector3();
	
	bool operator== (const NVector3& rhs) const;
	bool operator!= (const NVector3& rhs) const;

	NVector3 operator+ (const NVector3 rhs) const;
	NVector3 operator- (const NVector3 rhs) const;

	float Z;
};

struct NMatrix2
{
public:
	NMatrix2();
	~NMatrix2();

	float _11, _12;
	float _21, _22;

};

struct NMatrix3
{
public:
	NMatrix3();
	~NMatrix3();

	float _11, _12, _13;
	float _21, _22, _23;
	float _31, _32, _33;
};

struct NMatrix4
{
public:
	NMatrix4();
	~NMatrix4();

	float _11, _12, _13, _14;
	float _21, _22, _23, _24;
	float _31, _32, _33, _34;
	float _41, _42, _43, _44;
};